<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // 展开运算符的用法
        //   在箭头函数中  接收所有的实参(替代arguments)
        //   展开数组


        const arr = [1,2,3,4] ;

        console.log(...arr);


        // 如何实现数组深复制
        //    slice()
        //    遍历数组
        //    展开运算符



        const arr2 = [] ;
        arr.forEach(v => {
            arr2.push(v) ;
        })
        console.log(arr2);

        // 把arr展开，然后存入新的数组中
        const arr3 = [...arr] ;
        console.log(arr3);

        arr3.push('a') ;


        // const arr4 = [1,2,3,4,5] ;

        const arr4 = [...arr , 5] ;
        console.log(arr4);


        // 拼接两个数组
        const arr5 = [...arr , ...arr4] ;
        console.log(arr5);


        const person = {
            name : '小花' , 
            age : 17 ,
            say : function() {
                console.log(this.name);
            }
        }


        const person2 = {...person} ;

        console.log(person2);

        // console.log(...person);   // 报错  对象不能直接展开


        const person3 = {
            sex : '女' ,
            age : 18 ,
            speak : function() {
                console.log(this.name);
            }
        }

        // 对象展开时，键名相同的时候，后面覆盖前面的
        const person4 = {...person , ...person3} ;
        console.log(person4);


    </script>
    
</body>
</html>